package com.shujia

object Demo11Func1 {
  /**
    * 函数可以在哪里定义？
    * 类中、object中、函数中
    */
  def fun(): Unit ={
    println("fun")
  }

  def main(args: Array[String]): Unit = {
    /**
      * def : 定义函数的关键字
      * func1 : 函数名
      * Unit : 返回值类型 相当于void
      * {} : 函数体
      * 如果需要返回值时 最后一行代码会默认作为返回值
      */
    def func1(): Unit ={
      println("hello"+func2())

      def func2(): String ={
        "world"
      }
    }
    func1()

    println(func2("10"))
    println(func3("20"))
    println(func4("30"))
    // 如果函数不需要参数 则调用的时候括号可以省略
    println(func5)

  }


  /**
    * 函数的省略
    * 1、return 关键字可以省略 默认最后一行代码作为返回值
    * 2、返回值类型可以省略 可以根据返回值进行推断
    * 3、如果只有一行代码 花括号可以省略
    * 4、如果函数没有参数 括号可以省略
    */

  // 1、return 关键字可以省略
  def func2(str:String): Int ={
    str.toInt+100
  }
  //2.返回值类型可以省略
  def func3(str:String)={
    str.toInt+100
  }
  //3.只有一行代码 花括号可以省略
  def func4(str:String)= str.toInt+100
  //函数没有参数 括号可以省略
  def func5 ="hello"
}
